package com.gilight.base.admin.categor;

import com.gilight.base.base.exception.ServiceException;
import com.gilight.base.dto.CategoryDTO;
import com.gilight.base.model.CategoryDO;
import com.gilight.base.model.Page;


import java.util.List;

/**
 */

/**
 * 类目管理服务
 */
public interface AdminCategoryService {

    /**获取二级类目树
     *
     * @return
     * @throws ServiceException
     */
    public List<CategoryDTO> categorySecondLevelTree() throws ServiceException;

    /**获取类目树
     *
     * @return
     * @throws ServiceException
     */
    public List<CategoryDTO> categoryTree() throws ServiceException;
    /**获取类目树
     *
     * @return
     * @throws ServiceException
     * @param zId
     */
    public List<CategoryDTO> categoryThreeTree(Long zId) throws ServiceException;
    /**
     * 创建
     * @param title 类目标题
     * @param parentId 类目父节点
     * @param iconUrl 类目图标
     * @param picUrl 类目图片
     * @param adminId 管理员ID
     * @param zId
     * @param order
     * @return
     * @throws ServiceException
     */
    public CategoryDO create(
            String title,
            Long parentId,
            String iconUrl,
            String picUrl,
            Long adminId, Long zId, Integer order) throws ServiceException;

    /**
     * 删除
     * @param id         类目ID
     * @param adminId
     * @return
     * @throws ServiceException
     */
    public String delete(
            Long id,
            Long adminId) throws ServiceException;

    /**
     * 修改
     * @param id              类目ID
     * @param title           类目标题
     * @param parentId        类目父节点
     * @param iconUrl         类目图标
     * @param picUrl          类目图片
     * @param adminId         管理员ID
     * @param order
     * @return
     * @throws ServiceException
     */
    public CategoryDTO update(
            Long id,
            String title,
            Long parentId,
            String iconUrl,
            String picUrl,
            Long adminId, Integer order) throws ServiceException;

    /**
     * 首先的到所有的类目的List<CategoryDTO>,在根据SQL查询得到的数据转化成传往前端的数据
     * @param id         类目ID
     * @param title 类目标题
     * @param level 类目等级
     * @param parentId 父类目id
     * @param page    页码
     * @param limit   页码长度
     * @param adminId 管理员ID
     * @param zzjgId
     * @return
     * @throws ServiceException
     */
    public Page<CategoryDTO> list(
            Long id,
            String title,
            Integer level,
            Long parentId,
            Integer page,
            Integer limit,
            Long adminId, Long zzjgId) throws ServiceException;
}
